package ar.republicagroup.gestion.factory.beans;

import ar.republicagroup.gestion.entities.Caja;
import ar.republicagroup.gestion.entities.CuentaBanco;
import ar.republicagroup.gestion.entities.MovimientoTipo;
import ar.republicagroup.gestion.entities.Usuario;
import ar.republicagroup.gestion.services.CuentaBancoServices;
import ar.republicagroup.gestion.util.JComboBoxModel;
import ar.republicagroup.gestion.util.SpringUtils;
import ar.republicagroup.gestion.factory.MovimientoCaja;
import java.math.BigDecimal;
import java.util.Date;
import java.util.Map;
import org.apache.log4j.Logger;


/**
 *
 * @author DIEGOALV
 */
public class Retiro implements MovimientoCaja{
    
    CuentaBancoServices  cuentaBancoServices         = (CuentaBancoServices)SpringUtils.getBean("cuentaBancoServices");
    private Logger log = Logger.getLogger(Retiro.class);
    
    public Retiro(){
    
    }

    @Override
    public Caja createMovimiento(Map<String, Object> params) {
        
        Caja nuevoMov = null;
        
        try{
            /*Obtenemos los params del Map*/
            JComboBoxModel combo        = (JComboBoxModel)params.get("combo");
            CuentaBanco cuentaBanco     = cuentaBancoServices.get(Integer.parseInt(combo.getValue()));
            double importe              = Double.parseDouble(params.get("importe").toString());
            int    usuarioId            = Integer.parseInt(params.get("usuarioId").toString());
            MovimientoTipo movimiento   = (MovimientoTipo)params.get("movimiento");

            /* Creamos el Bean de Caja de un Retiro */
            nuevoMov= new Caja();
            nuevoMov.setFecha(new Date());
            nuevoMov.setUsuarioId(new Usuario(usuarioId));
            nuevoMov.setCuentaBancoId(cuentaBanco);
            nuevoMov.setImporte(BigDecimal.valueOf(importe));
            nuevoMov.setDescripcion(cuentaBanco.getNombre());
            nuevoMov.setMovimientoTipoId(movimiento);
            nuevoMov.setEstado(1);
        
        }catch(Exception ex){
            log.error(ex.getMessage(), ex);
        }
        return nuevoMov;
    }
    
}
